package grupobbva.pe.operhc.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import com.ibatis.dao.client.DaoManager;


import grupobbva.pe.operhc.domain.Parametro;
import grupobbva.pe.operhc.domain.Tabla;
import grupobbva.pe.operhc.service.BaseSqlMapDao;

public class TablaDAOImpl extends BaseSqlMapDao implements TablaDAO{
	private static Logger logger = Logger.getLogger(TablaDAOImpl.class);
	
	public TablaDAOImpl(DaoManager daoManager){
		super(daoManager);
	}

	public List<Tabla> getAllTypeTabla() {
		return queryForList("Operativizacion.getAllTypeTabla");
	}
	public List<Tabla> getTablaByTablaType(String codTipoTabla) {
		return queryForList("Operativizacion.getTablaByTablaType", codTipoTabla);
	}
	
	public Tabla getTablaByCodes(String codTabla,String codTipoTabla) {

			Map<String, String> mapParam = new HashMap<String, String>();
			mapParam.put("codTipoTabla", codTipoTabla);
			mapParam.put("codTabla", "'"+codTabla+"'");		
			
			List<Tabla> listTabla = queryForList("Operativizacion.getTablaByIdTabla", mapParam);
			if(listTabla != null && !listTabla.isEmpty()){
				return listTabla.get(0);
			}
			
			return new Tabla();
		}
	
	public boolean verifyParameterUniqueCodigo(String codigo) {

		Map<String, String> mapParam = new HashMap<String, String>();
		mapParam.put("codigo", "'"+codigo+"'");
		
		List<Tabla> listTabla = queryForList("Operativizacion.getTablaByCodigo", mapParam);
		if(listTabla != null && !listTabla.isEmpty()){
			return true;
		}
		
		return false;
	}
	
	public boolean verifyParameterUniqueCodigoUpdate(String codigo,	String idTabla) {

		Map<String, String> mapParam = new HashMap<String, String>();		
		mapParam.put("codigo", "'"+codigo+"'");
		mapParam.put("idTabla", idTabla);
		
		List<Tabla> listTabla = queryForList("Operativizacion.getTablaByCodigoUpdate", mapParam);
		if(listTabla != null && !listTabla.isEmpty()){
			return true;
		}
		
		return false;
	}
	public void saveTabla(Tabla bean, boolean isNew) throws Exception {

		if(isNew){
			insert("Operativizacion.insertTabla", bean);		
		}else{
			update("Operativizacion.updateTabla", bean);
		}
	}
	
	public void deleteTablaByCode(String codes, String codTipoTabla) throws Exception{

		Map<String, String> map = new HashMap<String, String>();
		map.put("codTipoTabla", codTipoTabla);
		map.put("codes", codes);
		
		delete("Operativizacion.deleteTablaByCode", map);	
	}

}
